home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / pwrwin.exe / DEMO.C < prev    next >
Encoding:
C/C++ Source or Header  |  1991-01-15  |  4.7 KB  |  158 lines

  1. #include <string.h>
  2. #include <io.h>
  3. #include <time.h>
  4. #include <dos.h>
  5. #include "pw.h"
  6.  
  7. char myclass[] = "myclass";
  8. char timerclass[] = "timer";
  9. char dirclass[] = "dir";
  10. char name[]    = "Window";
  11.  
  12. struct NewWindow NewWindow0 = { 20,7,50,15,
  13.                                0x57,0x5F,WNDSTYLE_BOLDBORDER,
  14.                    0,
  15.                    name,
  16.                    myclass, 0 };
  17.  
  18. struct NewWindow NewWindow1 = { 13,10,24,10,
  19.                                0x1E,0x1F,WNDSTYLE_BORDER,
  20.                    0,
  21.                    name,
  22.                    myclass, 0 };
  23.  
  24. struct NewWindow NewWindow2 = { 50,1,14,15,
  25.                                0x2E,0x2E,WNDSTYLE_BORDER,
  26.                    0,
  27.                    name,
  28.                                dirclass, 0 };
  29.  
  30. struct NewWindow NewWindow3 = { 20,12,22,3,
  31.                                0x3F,0x3f,WNDSTYLE_BORDER,
  32.                    0,
  33.                    name,
  34.                                timerclass, 0 };
  35.  
  36. struct Window *win;
  37. struct Window *win1;
  38. struct Window *win2;
  39. struct Window *win3;
  40.  
  41. struct find_t files[100];
  42. int index=0,count;
  43.  
  44. long DirProc (struct Window *win, unsigned Message, int wParam, long lParam)
  45. {
  46. static int i;
  47. void GetDir ();
  48. char buffer[64],*ptr;
  49.  
  50.  switch (Message) {
  51.         case WM_CREATE:
  52.                 GetDir ();
  53.                 index = 0;
  54.                 break;
  55.  
  56.         case WM_KEYPRESSED:
  57.                 if (lParam) {
  58.                         switch (wParam) {
  59.                                 case 0x50:
  60.                                         if (index==count) break;
  61.                                         ScrollWindow (win,0,1);
  62.                                         index++;
  63.                                         OutText (win,0,0,files[index].name,strlen(files[index].name));
  64.                                         break;
  65.                                 case 0x48:
  66.                                         if (!index) break;
  67.                                         ScrollWindow (win,0,-1);
  68.                                         OutText (win,0,12,files[index+12].name,strlen(files[index+12].name));
  69.                                         index--;
  70.                                         break;
  71.                                 }
  72.                         }
  73.                 break;
  74.  
  75.         case WM_PAINT:
  76.                 for (i=0;i<13;i++) {
  77.                         ptr = strchr(files[i].name,'.');
  78.                         if (ptr) *ptr=0;
  79.                         sprintf (buffer,"%-8s .%s",files[i].name,ptr+1);
  80.                         OutText (win,0,i,buffer,strlen(buffer));
  81.                         }
  82.                 break;
  83.         }
  84.  return 0;
  85. }
  86.  
  87. long WndProc (struct Window *win, unsigned Message, int wParam, long lParam)
  88. {
  89.  return 0;
  90. }
  91.  
  92. long TimeProc (struct Window *window, unsigned Message, int wParam, long lParam)
  93. {
  94. static int i=0,rx=1,ry=1,x=5,y=3;
  95. char Buffer[30];
  96. long mytime;
  97. static char *ptr=0;
  98.  
  99.  switch (Message) {
  100.         case WM_TIMER:
  101.                   if (i++>17) {
  102.                         i = 0;
  103.                         time (&mytime);
  104.                         sprintf (Buffer,"%s",ctime(&mytime));
  105.                         OutText ( window,0,0,Buffer,strlen(Buffer));
  106.                         }
  107.                 OutText (win,x,y,"    ",4);
  108.                 if ((x+rx<0) || (x+rx==44)) rx = -rx;
  109.                 if ((y+ry<0) || (y+ry==13)) ry = -ry;
  110.                 x += rx;
  111.                 y += ry;
  112.                 OutText (win,x,y,"ATMO",4);
  113.  
  114.                 ScrollWindow (win1,0,-1);
  115.                 sprintf (Buffer,"%0.2X %0.2X %0.2X %0.2X - %c%c%c%c",
  116.                          (char) *ptr,(char) *(ptr+1),(char) *(ptr+2),(char) *(ptr+3),
  117.                                                          *ptr ? *ptr : '.',
  118.                                                          *++ptr ? *ptr : '.',
  119.                                                          *++ptr ? *ptr : '.',
  120.                                                          *++ptr ? *ptr : '.');
  121.                 OutText (win1,2,7,Buffer,strlen(Buffer));
  122.                 break;
  123.         }
  124.  return 0;
  125. }
  126.  
  127. void GetDir ()
  128.    {
  129.    struct find_t findbuffer;
  130.  
  131.     if (!_dos_findfirst ("*.*",_A_NORMAL,&findbuffer))
  132.         do memcpy (&files[index++],&findbuffer,sizeof (struct find_t));
  133.         while (!_dos_findnext (&findbuffer));
  134.       count = index;
  135.    }
  136.  
  137. int WinMain ()
  138. {
  139.   AddClass (myclass,WndProc);
  140.   AddClass (timerclass,TimeProc);
  141.   AddClass (dirclass,DirProc);
  142.  
  143.   win = CreateWindow (&NewWindow0);
  144.   win1 = CreateWindow (&NewWindow1);
  145.   win3 = CreateWindow (&NewWindow3);
  146.   win2 = CreateWindow (&NewWindow2);
  147.   SetTimer (win3,1);
  148.  
  149.   MainWindowProc ();
  150.  
  151.   DestroyWindow (win2);
  152.   DestroyWindow (win3);
  153.   DestroyWindow (win1);
  154.   DestroyWindow (win);
  155.  
  156. return 1;
  157. }
  158.